#ifndef RENDERER_H
#define RENDERER_H

#include "Renderer/renderCommand.h"

#include "Renderer/camera.h"
#include "Renderer/orthographicCamera.h"
#include "Renderer/perspectiveCamera.h"
#include "Renderer/shader.h"
#include "Core/base.h"

namespace CC {

	class CC_EXPORT Renderer
	{
	public:
		static void Init();
		static void Shutdown();
		
		static void OnWindowResize(uint32_t width, uint32_t height);

		static void BeginScene(OrthographicCamera* camera);
		static void BeginScene3D(PerspectiveCamera* camera);
		static void EndScene();
		static void EndScene3D();

		static void SetDisplayMode(DisplayModesEnum mode);
		static void Submit(Shader* shader, const VertexArray* vertexArray, const glm::mat4& transform = glm::mat4(1.0f), DisplayModesEnum mode = DisplayModesEnum::DisplayModesEnum_TRIANGLES);

	private:
		struct SceneData
		{
			glm::mat4 ViewProjectionMatrix;
		};

		static SceneData* s_SceneData;
	};
}

#endif